package io.github.sds100.keymapper.base.utils

import io.github.sds100.keymapper.system.inputevents.Scancode

object ScancodeStrings {
    private val SCANCODE_LABELS = mapOf<Int, String>(
        // Number keys
        Scancode.KEY_1 to "1",
        Scancode.KEY_2 to "2",
        Scancode.KEY_3 to "3",
        Scancode.KEY_4 to "4",
        Scancode.KEY_5 to "5",
        Scancode.KEY_6 to "6",
        Scancode.KEY_7 to "7",
        Scancode.KEY_8 to "8",
        Scancode.KEY_9 to "9",
        Scancode.KEY_0 to "0",

        // Special characters
        Scancode.KEY_MINUS to "-",
        Scancode.KEY_EQUAL to "=",
        Scancode.KEY_LEFTBRACE to "[",
        Scancode.KEY_RIGHTBRACE to "]",
        Scancode.KEY_SEMICOLON to ";",
        Scancode.KEY_APOSTROPHE to "'",
        Scancode.KEY_GRAVE to "`",
        Scancode.KEY_BACKSLASH to "\\",
        Scancode.KEY_COMMA to ",",
        Scancode.KEY_DOT to ".",
        Scancode.KEY_SLASH to "/",

        // Letter keys
        Scancode.KEY_Q to "Q",
        Scancode.KEY_W to "W",
        Scancode.KEY_E to "E",
        Scancode.KEY_R to "R",
        Scancode.KEY_T to "T",
        Scancode.KEY_Y to "Y",
        Scancode.KEY_U to "U",
        Scancode.KEY_I to "I",
        Scancode.KEY_O to "O",
        Scancode.KEY_P to "P",
        Scancode.KEY_A to "A",
        Scancode.KEY_S to "S",
        Scancode.KEY_D to "D",
        Scancode.KEY_F to "F",
        Scancode.KEY_G to "G",
        Scancode.KEY_H to "H",
        Scancode.KEY_J to "J",
        Scancode.KEY_K to "K",
        Scancode.KEY_L to "L",
        Scancode.KEY_Z to "Z",
        Scancode.KEY_X to "X",
        Scancode.KEY_C to "C",
        Scancode.KEY_V to "V",
        Scancode.KEY_B to "B",
        Scancode.KEY_N to "N",
        Scancode.KEY_M to "M",

        // Function keys
        Scancode.KEY_F1 to "F1",
        Scancode.KEY_F2 to "F2",
        Scancode.KEY_F3 to "F3",
        Scancode.KEY_F4 to "F4",
        Scancode.KEY_F5 to "F5",
        Scancode.KEY_F6 to "F6",
        Scancode.KEY_F7 to "F7",
        Scancode.KEY_F8 to "F8",
        Scancode.KEY_F9 to "F9",
        Scancode.KEY_F10 to "F10",
        Scancode.KEY_F11 to "F11",
        Scancode.KEY_F12 to "F12",
        Scancode.KEY_F13 to "F13",
        Scancode.KEY_F14 to "F14",
        Scancode.KEY_F15 to "F15",
        Scancode.KEY_F16 to "F16",
        Scancode.KEY_F17 to "F17",
        Scancode.KEY_F18 to "F18",
        Scancode.KEY_F19 to "F19",
        Scancode.KEY_F20 to "F20",
        Scancode.KEY_F21 to "F21",
        Scancode.KEY_F22 to "F22",
        Scancode.KEY_F23 to "F23",
        Scancode.KEY_F24 to "F24",

        // Control keys
        Scancode.KEY_BACKSPACE to "Backspace",
        Scancode.KEY_TAB to "Tab",
        Scancode.KEY_ENTER to "Enter",
        Scancode.KEY_LEFTCTRL to "Left Ctrl",
        Scancode.KEY_RIGHTCTRL to "Right Ctrl",
        Scancode.KEY_LEFTSHIFT to "Left Shift",
        Scancode.KEY_RIGHTSHIFT to "Right Shift",
        Scancode.KEY_LEFTALT to "Left Alt",
        Scancode.KEY_RIGHTALT to "Right Alt",
        Scancode.KEY_SPACE to "Space",
        Scancode.KEY_CAPSLOCK to "Caps Lock",
        Scancode.KEY_NUMLOCK to "Num Lock",
        Scancode.KEY_SCROLLLOCK to "Scroll Lock",
        Scancode.KEY_LEFTMETA to "Left Meta",
        Scancode.KEY_RIGHTMETA to "Right Meta",
        Scancode.KEY_COMPOSE to "Compose",

        // Navigation keys
        Scancode.KEY_HOME to "Home",
        Scancode.KEY_END to "End",
        Scancode.KEY_UP to "Up",
        Scancode.KEY_DOWN to "Down",
        Scancode.KEY_LEFT to "Left",
        Scancode.KEY_RIGHT to "Right",
        Scancode.KEY_PAGEUP to "Page Up",
        Scancode.KEY_PAGEDOWN to "Page Down",
        Scancode.KEY_INSERT to "Insert",
        Scancode.KEY_DELETE to "Delete",

        // Keypad keys
        Scancode.KEY_KP0 to "Keypad 0",
        Scancode.KEY_KP1 to "Keypad 1",
        Scancode.KEY_KP2 to "Keypad 2",
        Scancode.KEY_KP3 to "Keypad 3",
        Scancode.KEY_KP4 to "Keypad 4",
        Scancode.KEY_KP5 to "Keypad 5",
        Scancode.KEY_KP6 to "Keypad 6",
        Scancode.KEY_KP7 to "Keypad 7",
        Scancode.KEY_KP8 to "Keypad 8",
        Scancode.KEY_KP9 to "Keypad 9",
        Scancode.KEY_KPDOT to "Keypad .",
        Scancode.KEY_KPPLUS to "Keypad +",
        Scancode.KEY_KPMINUS to "Keypad -",
        Scancode.KEY_KPASTERISK to "Keypad *",
        Scancode.KEY_KPSLASH to "Keypad /",
        Scancode.KEY_KPENTER to "Keypad Enter",
        Scancode.KEY_KPEQUAL to "Keypad =",
        Scancode.KEY_KPPLUSMINUS to "Keypad +/-",
        Scancode.KEY_KPCOMMA to "Keypad ,",
        Scancode.KEY_KPLEFTPAREN to "Keypad (",
        Scancode.KEY_KPRIGHTPAREN to "Keypad )",
        Scancode.KEY_KPJPCOMMA to "Keypad JP Comma",

        // Media keys
        Scancode.KEY_MUTE to "Mute",
        Scancode.KEY_VOLUMEDOWN to "Volume Down",
        Scancode.KEY_VOLUMEUP to "Volume Up",
        Scancode.KEY_NEXTSONG to "Next Song",
        Scancode.KEY_PREVIOUSSONG to "Previous Song",
        Scancode.KEY_PLAYPAUSE to "Play/Pause",
        Scancode.KEY_STOPCD to "Stop",
        Scancode.KEY_RECORD to "Record",
        Scancode.KEY_REWIND to "Rewind",
        Scancode.KEY_FASTFORWARD to "Fast Forward",
        Scancode.KEY_EJECTCD to "Eject",
        Scancode.KEY_CLOSECD to "Close CD",
        Scancode.KEY_EJECTCLOSECD to "Eject/Close CD",
        Scancode.KEY_PLAYCD to "Play CD",
        Scancode.KEY_PAUSECD to "Pause CD",
        Scancode.KEY_PLAY to "Play",

        // System keys
        Scancode.KEY_POWER to "Power",
        Scancode.KEY_SLEEP to "Sleep",
        Scancode.KEY_WAKEUP to "Wake Up",
        Scancode.KEY_SUSPEND to "Suspend",
        Scancode.KEY_PAUSE to "Pause",
        Scancode.KEY_SYSRQ to "SysRq",
        Scancode.KEY_LINEFEED to "Line Feed",
        Scancode.KEY_MACRO to "Macro",
        Scancode.KEY_SCALE to "Scale",

        // Brightness keys
        Scancode.KEY_BRIGHTNESSDOWN to "Brightness Down",
        Scancode.KEY_BRIGHTNESSUP to "Brightness Up",
        Scancode.KEY_BRIGHTNESS_CYCLE to "Brightness Cycle",
        Scancode.KEY_BRIGHTNESS_AUTO to "Brightness Auto",
        Scancode.KEY_BRIGHTNESS_MIN to "Brightness Min",
        Scancode.KEY_BRIGHTNESS_MAX to "Brightness Max",
        Scancode.KEY_DISPLAY_OFF to "Display Off",
        Scancode.KEY_SWITCHVIDEOMODE to "Switch Video Mode",
        Scancode.KEY_KBDILLUMTOGGLE to "Keyboard Illumination Toggle",
        Scancode.KEY_KBDILLUMDOWN to "Keyboard Illumination Down",
        Scancode.KEY_KBDILLUMUP to "Keyboard Illumination Up",

        // International keys
        Scancode.KEY_ZENKAKUHANKAKU to "Zenkaku/Hankaku",
        Scancode.KEY_102ND to "102nd Key",
        Scancode.KEY_RO to "Ro",
        Scancode.KEY_KATAKANA to "Katakana",
        Scancode.KEY_HIRAGANA to "Hiragana",
        Scancode.KEY_HENKAN to "Henkan",
        Scancode.KEY_KATAKANAHIRAGANA to "Katakana/Hiragana",
        Scancode.KEY_MUHENKAN to "Muhenkan",
        Scancode.KEY_HANGEUL to "Hangeul",
        Scancode.KEY_HANJA to "Hanja",
        Scancode.KEY_YEN to "Yen",

        // Application keys
        Scancode.KEY_STOP to "Stop",
        Scancode.KEY_AGAIN to "Again",
        Scancode.KEY_PROPS to "Properties",
        Scancode.KEY_UNDO to "Undo",
        Scancode.KEY_FRONT to "Front",
        Scancode.KEY_COPY to "Copy",
        Scancode.KEY_OPEN to "Open",
        Scancode.KEY_PASTE to "Paste",
        Scancode.KEY_FIND to "Find",
        Scancode.KEY_CUT to "Cut",
        Scancode.KEY_HELP to "Help",
        Scancode.KEY_MENU to "Menu",
        Scancode.KEY_CALC to "Calculator",
        Scancode.KEY_SETUP to "Setup",
        Scancode.KEY_FILE to "File",
        Scancode.KEY_SENDFILE to "Send File",
        Scancode.KEY_DELETEFILE to "Delete File",
        Scancode.KEY_XFER to "Transfer",
        Scancode.KEY_PROG1 to "Program 1",
        Scancode.KEY_PROG2 to "Program 2",
        Scancode.KEY_PROG3 to "Program 3",
        Scancode.KEY_PROG4 to "Program 4",

        // Web/Internet keys
        Scancode.KEY_WWW to "WWW",
        Scancode.KEY_MSDOS to "MS-DOS",
        Scancode.KEY_COFFEE to "Coffee",
        Scancode.KEY_ROTATE_DISPLAY to "Rotate Display",
        Scancode.KEY_CYCLEWINDOWS to "Cycle Windows",
        Scancode.KEY_MAIL to "Mail",
        Scancode.KEY_BOOKMARKS to "Bookmarks",
        Scancode.KEY_COMPUTER to "Computer",
        Scancode.KEY_BACK to "Back",
        Scancode.KEY_FORWARD to "Forward",
        Scancode.KEY_HOMEPAGE to "Homepage",
        Scancode.KEY_REFRESH to "Refresh",
        Scancode.KEY_EXIT to "Exit",
        Scancode.KEY_MOVE to "Move",
        Scancode.KEY_EDIT to "Edit",
        Scancode.KEY_SCROLLUP to "Scroll Up",
        Scancode.KEY_SCROLLDOWN to "Scroll Down",
        Scancode.KEY_NEW to "New",
        Scancode.KEY_REDO to "Redo",

        // Multimedia keys
        Scancode.KEY_BASSBOOST to "Bass Boost",
        Scancode.KEY_PRINT to "Print",
        Scancode.KEY_HP to "HP",
        Scancode.KEY_CAMERA to "Camera",
        Scancode.KEY_SOUND to "Sound",
        Scancode.KEY_QUESTION to "Question",
        Scancode.KEY_EMAIL to "Email",
        Scancode.KEY_CHAT to "Chat",
        Scancode.KEY_SEARCH to "Search",
        Scancode.KEY_CONNECT to "Connect",
        Scancode.KEY_FINANCE to "Finance",
        Scancode.KEY_SPORT to "Sport",
        Scancode.KEY_SHOP to "Shop",
        Scancode.KEY_ALTERASE to "Alt Erase",
        Scancode.KEY_CANCEL to "Cancel",
        Scancode.KEY_MEDIA to "Media",

        // Wireless keys
        Scancode.KEY_BLUETOOTH to "Bluetooth",
        Scancode.KEY_WLAN to "WLAN",
        Scancode.KEY_UWB to "UWB",
        Scancode.KEY_UNKNOWN to "Unknown",
        Scancode.KEY_WWAN to "WWAN",
        Scancode.KEY_RFKILL to "RF Kill",
        Scancode.KEY_MICMUTE to "Mic Mute",

        // Video keys
        Scancode.KEY_VIDEO_NEXT to "Video Next",
        Scancode.KEY_VIDEO_PREV to "Video Previous",

        // Battery and document keys
        Scancode.KEY_BATTERY to "Battery",
        Scancode.KEY_DOCUMENTS to "Documents",
        Scancode.KEY_SEND to "Send",
        Scancode.KEY_REPLY to "Reply",
        Scancode.KEY_FORWARDMAIL to "Forward Mail",
        Scancode.KEY_SAVE to "Save",

        // Mouse buttons
        Scancode.BTN_LEFT to "Left Mouse Button",
        Scancode.BTN_RIGHT to "Right Mouse Button",
        Scancode.BTN_MIDDLE to "Middle Mouse Button",
        Scancode.BTN_SIDE to "Side Mouse Button",
        Scancode.BTN_EXTRA to "Extra Mouse Button",
        Scancode.BTN_FORWARD to "Forward Mouse Button",
        Scancode.BTN_BACK to "Back Mouse Button",
        Scancode.BTN_TASK to "Task Mouse Button",

        // Generic buttons
        Scancode.BTN_0 to "Button 0",
        Scancode.BTN_1 to "Button 1",
        Scancode.BTN_2 to "Button 2",
        Scancode.BTN_3 to "Button 3",
        Scancode.BTN_4 to "Button 4",
        Scancode.BTN_5 to "Button 5",
        Scancode.BTN_6 to "Button 6",
        Scancode.BTN_7 to "Button 7",
        Scancode.BTN_8 to "Button 8",
        Scancode.BTN_9 to "Button 9",

        // Joystick buttons
        Scancode.BTN_TRIGGER to "Trigger",
        Scancode.BTN_THUMB to "Thumb",
        Scancode.BTN_THUMB2 to "Thumb 2",
        Scancode.BTN_TOP to "Top",
        Scancode.BTN_TOP2 to "Top 2",
        Scancode.BTN_PINKIE to "Pinkie",
        Scancode.BTN_BASE to "Base",
        Scancode.BTN_BASE2 to "Base 2",
        Scancode.BTN_BASE3 to "Base 3",
        Scancode.BTN_BASE4 to "Base 4",
        Scancode.BTN_BASE5 to "Base 5",
        Scancode.BTN_BASE6 to "Base 6",
        Scancode.BTN_DEAD to "Dead",

        // Gamepad buttons
        Scancode.BTN_SOUTH to "South Button",
        Scancode.BTN_EAST to "East Button",
        Scancode.BTN_C to "C Button",
        Scancode.BTN_NORTH to "North Button",
        Scancode.BTN_WEST to "West Button",
        Scancode.BTN_Z to "Z Button",
        Scancode.BTN_TL to "Top Left",
        Scancode.BTN_TR to "Top Right",
        Scancode.BTN_TL2 to "Top Left 2",
        Scancode.BTN_TR2 to "Top Right 2",
        Scancode.BTN_SELECT to "Select",
        Scancode.BTN_START to "Start",
        Scancode.BTN_MODE to "Mode",
        Scancode.BTN_THUMBL to "Left Thumb",
        Scancode.BTN_THUMBR to "Right Thumb",

        // Digital pen buttons
        Scancode.BTN_TOOL_PEN to "Pen Tool",
        Scancode.BTN_TOOL_RUBBER to "Rubber Tool",
        Scancode.BTN_TOOL_BRUSH to "Brush Tool",
        Scancode.BTN_TOOL_PENCIL to "Pencil Tool",
        Scancode.BTN_TOOL_AIRBRUSH to "Airbrush Tool",
        Scancode.BTN_TOOL_FINGER to "Finger Tool",
        Scancode.BTN_TOOL_MOUSE to "Mouse Tool",
        Scancode.BTN_TOOL_LENS to "Lens Tool",
        Scancode.BTN_TOOL_QUINTTAP to "Quint Tap Tool",
        Scancode.BTN_STYLUS3 to "Stylus 3",
        Scancode.BTN_TOUCH to "Touch",
        Scancode.BTN_STYLUS to "Stylus",
        Scancode.BTN_STYLUS2 to "Stylus 2",
        Scancode.BTN_TOOL_DOUBLETAP to "Double Tap Tool",
        Scancode.BTN_TOOL_TRIPLETAP to "Triple Tap Tool",
        Scancode.BTN_TOOL_QUADTAP to "Quad Tap Tool",

        // Wheel buttons
        Scancode.BTN_GEAR_DOWN to "Gear Down",
        Scancode.BTN_GEAR_UP to "Gear Up",

        // Remote control keys
        Scancode.KEY_OK to "OK",
        Scancode.KEY_SELECT to "Select",
        Scancode.KEY_GOTO to "Goto",
        Scancode.KEY_CLEAR to "Clear",
        Scancode.KEY_POWER2 to "Power 2",
        Scancode.KEY_OPTION to "Option",
        Scancode.KEY_INFO to "Info",
        Scancode.KEY_TIME to "Time",
        Scancode.KEY_VENDOR to "Vendor",
        Scancode.KEY_ARCHIVE to "Archive",
        Scancode.KEY_PROGRAM to "Program",
        Scancode.KEY_CHANNEL to "Channel",
        Scancode.KEY_FAVORITES to "Favorites",
        Scancode.KEY_EPG to "EPG",
        Scancode.KEY_PVR to "PVR",
        Scancode.KEY_MHP to "MHP",
        Scancode.KEY_LANGUAGE to "Language",
        Scancode.KEY_TITLE to "Title",
        Scancode.KEY_SUBTITLE to "Subtitle",
        Scancode.KEY_ANGLE to "Angle",
        Scancode.KEY_ZOOM to "Zoom",
        Scancode.KEY_MODE to "Mode",
        Scancode.KEY_KEYBOARD to "Keyboard",
        Scancode.KEY_SCREEN to "Screen",
        Scancode.KEY_PC to "PC",
        Scancode.KEY_TV to "TV",
        Scancode.KEY_TV2 to "TV 2",
        Scancode.KEY_VCR to "VCR",
        Scancode.KEY_VCR2 to "VCR 2",
        Scancode.KEY_SAT to "Satellite",
        Scancode.KEY_SAT2 to "Satellite 2",
        Scancode.KEY_CD to "CD",
        Scancode.KEY_TAPE to "Tape",
        Scancode.KEY_RADIO to "Radio",
        Scancode.KEY_TUNER to "Tuner",
        Scancode.KEY_PLAYER to "Player",
        Scancode.KEY_TEXT to "Text",
        Scancode.KEY_DVD to "DVD",
        Scancode.KEY_AUX to "Aux",
        Scancode.KEY_MP3 to "MP3",
        Scancode.KEY_AUDIO to "Audio",
        Scancode.KEY_VIDEO to "Video",
        Scancode.KEY_DIRECTORY to "Directory",
        Scancode.KEY_LIST to "List",
        Scancode.KEY_MEMO to "Memo",
        Scancode.KEY_CALENDAR to "Calendar",
        Scancode.KEY_RED to "Red",
        Scancode.KEY_GREEN to "Green",
        Scancode.KEY_YELLOW to "Yellow",
        Scancode.KEY_BLUE to "Blue",
        Scancode.KEY_CHANNELUP to "Channel Up",
        Scancode.KEY_CHANNELDOWN to "Channel Down",
        Scancode.KEY_FIRST to "First",
        Scancode.KEY_LAST to "Last",
        Scancode.KEY_AB to "A-B",
        Scancode.KEY_NEXT to "Next",
        Scancode.KEY_RESTART to "Restart",
        Scancode.KEY_SLOW to "Slow",
        Scancode.KEY_SHUFFLE to "Shuffle",
        Scancode.KEY_BREAK to "Break",
        Scancode.KEY_PREVIOUS to "Previous",
        Scancode.KEY_DIGITS to "Digits",
        Scancode.KEY_TEEN to "Teen",
        Scancode.KEY_TWEN to "Twen",

        // Phone keys
        Scancode.KEY_PHONE to "Phone",
        Scancode.KEY_VIDEOPHONE to "Video Phone",
        Scancode.KEY_PICKUP_PHONE to "Pick Up Phone",
        Scancode.KEY_HANGUP_PHONE to "Hang Up Phone",

        // Application keys
        Scancode.KEY_GAMES to "Games",
        Scancode.KEY_ZOOMIN to "Zoom In",
        Scancode.KEY_ZOOMOUT to "Zoom Out",
        Scancode.KEY_ZOOMRESET to "Zoom Reset",
        Scancode.KEY_WORDPROCESSOR to "Word Processor",
        Scancode.KEY_EDITOR to "Editor",
        Scancode.KEY_SPREADSHEET to "Spreadsheet",
        Scancode.KEY_GRAPHICSEDITOR to "Graphics Editor",
        Scancode.KEY_PRESENTATION to "Presentation",
        Scancode.KEY_DATABASE to "Database",
        Scancode.KEY_NEWS to "News",
        Scancode.KEY_VOICEMAIL to "Voicemail",
        Scancode.KEY_ADDRESSBOOK to "Address Book",
        Scancode.KEY_MESSENGER to "Messenger",
        Scancode.KEY_DISPLAYTOGGLE to "Display Toggle",
        Scancode.KEY_SPELLCHECK to "Spell Check",
        Scancode.KEY_LOGOFF to "Log Off",

        // Currency keys
        Scancode.KEY_DOLLAR to "Dollar",
        Scancode.KEY_EURO to "Euro",

        // Media control keys
        Scancode.KEY_FRAMEBACK to "Frame Back",
        Scancode.KEY_FRAMEFORWARD to "Frame Forward",
        Scancode.KEY_CONTEXT_MENU to "Context Menu",
        Scancode.KEY_MEDIA_REPEAT to "Media Repeat",
        Scancode.KEY_10CHANNELSUP to "10 Channels Up",
        Scancode.KEY_10CHANNELSDOWN to "10 Channels Down",
        Scancode.KEY_IMAGES to "Images",
        Scancode.KEY_NOTIFICATION_CENTER to "Notification Center",

        // Numeric keypad
        Scancode.KEY_NUMERIC_0 to "Numeric 0",
        Scancode.KEY_NUMERIC_1 to "Numeric 1",
        Scancode.KEY_NUMERIC_2 to "Numeric 2",
        Scancode.KEY_NUMERIC_3 to "Numeric 3",
        Scancode.KEY_NUMERIC_4 to "Numeric 4",
        Scancode.KEY_NUMERIC_5 to "Numeric 5",
        Scancode.KEY_NUMERIC_6 to "Numeric 6",
        Scancode.KEY_NUMERIC_7 to "Numeric 7",
        Scancode.KEY_NUMERIC_8 to "Numeric 8",
        Scancode.KEY_NUMERIC_9 to "Numeric 9",
        Scancode.KEY_NUMERIC_STAR to "Numeric *",
        Scancode.KEY_NUMERIC_POUND to "Numeric #",
        Scancode.KEY_NUMERIC_A to "Numeric A",
        Scancode.KEY_NUMERIC_B to "Numeric B",
        Scancode.KEY_NUMERIC_C to "Numeric C",
        Scancode.KEY_NUMERIC_D to "Numeric D",
        Scancode.KEY_NUMERIC_11 to "Numeric 11",
        Scancode.KEY_NUMERIC_12 to "Numeric 12",

        // System control keys
        Scancode.KEY_BUTTONCONFIG to "Button Config",
        Scancode.KEY_TASKMANAGER to "Task Manager",
        Scancode.KEY_JOURNAL to "Journal",
        Scancode.KEY_CONTROLPANEL to "Control Panel",
        Scancode.KEY_APPSELECT to "App Select",
        Scancode.KEY_SCREENSAVER to "Screen Saver",
        Scancode.KEY_VOICECOMMAND to "Voice Command",
        Scancode.KEY_ASSISTANT to "Assistant",
        Scancode.KEY_KBD_LAYOUT_NEXT to "Keyboard Layout Next",
        Scancode.KEY_EMOJI_PICKER to "Emoji Picker",
        Scancode.KEY_DICTATE to "Dictate",

        // D-pad buttons
        Scancode.BTN_DPAD_UP to "D-pad Up",
        Scancode.BTN_DPAD_DOWN to "D-pad Down",
        Scancode.BTN_DPAD_LEFT to "D-pad Left",
        Scancode.BTN_DPAD_RIGHT to "D-pad Right",

        // Text editing keys
        Scancode.KEY_DEL_EOL to "Delete End of Line",
        Scancode.KEY_DEL_EOS to "Delete End of Screen",
        Scancode.KEY_INS_LINE to "Insert Line",
        Scancode.KEY_DEL_LINE to "Delete Line",

        // Function modifier keys
        Scancode.KEY_FN to "Fn",
        Scancode.KEY_FN_ESC to "Fn+Esc",
        Scancode.KEY_FN_F1 to "Fn+F1",
        Scancode.KEY_FN_F2 to "Fn+F2",
        Scancode.KEY_FN_F3 to "Fn+F3",
        Scancode.KEY_FN_F4 to "Fn+F4",
        Scancode.KEY_FN_F5 to "Fn+F5",
        Scancode.KEY_FN_F6 to "Fn+F6",
        Scancode.KEY_FN_F7 to "Fn+F7",
        Scancode.KEY_FN_F8 to "Fn+F8",
        Scancode.KEY_FN_F9 to "Fn+F9",
        Scancode.KEY_FN_F10 to "Fn+F10",
        Scancode.KEY_FN_F11 to "Fn+F11",
        Scancode.KEY_FN_F12 to "Fn+F12",
        Scancode.KEY_FN_1 to "Fn+1",
        Scancode.KEY_FN_2 to "Fn+2",
        Scancode.KEY_FN_D to "Fn+D",
        Scancode.KEY_FN_E to "Fn+E",
        Scancode.KEY_FN_F to "Fn+F",
        Scancode.KEY_FN_S to "Fn+S",
        Scancode.KEY_FN_B to "Fn+B",
        Scancode.KEY_FN_RIGHT_SHIFT to "Fn+Right Shift",

        // Braille keys
        Scancode.KEY_BRL_DOT1 to "Braille Dot 1",
        Scancode.KEY_BRL_DOT2 to "Braille Dot 2",
        Scancode.KEY_BRL_DOT3 to "Braille Dot 3",
        Scancode.KEY_BRL_DOT4 to "Braille Dot 4",
        Scancode.KEY_BRL_DOT5 to "Braille Dot 5",
        Scancode.KEY_BRL_DOT6 to "Braille Dot 6",
        Scancode.KEY_BRL_DOT7 to "Braille Dot 7",
        Scancode.KEY_BRL_DOT8 to "Braille Dot 8",
        Scancode.KEY_BRL_DOT9 to "Braille Dot 9",
        Scancode.KEY_BRL_DOT10 to "Braille Dot 10",

        // Camera keys
        Scancode.KEY_CAMERA_FOCUS to "Camera Focus",
        Scancode.KEY_CAMERA_ZOOMIN to "Camera Zoom In",
        Scancode.KEY_CAMERA_ZOOMOUT to "Camera Zoom Out",
        Scancode.KEY_CAMERA_UP to "Camera Up",
        Scancode.KEY_CAMERA_DOWN to "Camera Down",
        Scancode.KEY_CAMERA_LEFT to "Camera Left",
        Scancode.KEY_CAMERA_RIGHT to "Camera Right",
        Scancode.KEY_CAMERA_ACCESS_ENABLE to "Camera Access Enable",
        Scancode.KEY_CAMERA_ACCESS_DISABLE to "Camera Access Disable",
        Scancode.KEY_CAMERA_ACCESS_TOGGLE to "Camera Access Toggle",

        // Wireless and touchpad keys
        Scancode.KEY_WPS_BUTTON to "WPS Button",
        Scancode.KEY_TOUCHPAD_TOGGLE to "Touchpad Toggle",
        Scancode.KEY_TOUCHPAD_ON to "Touchpad On",
        Scancode.KEY_TOUCHPAD_OFF to "Touchpad Off",

        // Sensor keys
        Scancode.KEY_ALS_TOGGLE to "ALS Toggle",
        Scancode.KEY_ROTATE_LOCK_TOGGLE to "Rotate Lock Toggle",

        // Macro keys (first 10)
        Scancode.KEY_MACRO1 to "Macro 1",
        Scancode.KEY_MACRO2 to "Macro 2",
        Scancode.KEY_MACRO3 to "Macro 3",
        Scancode.KEY_MACRO4 to "Macro 4",
        Scancode.KEY_MACRO5 to "Macro 5",
        Scancode.KEY_MACRO6 to "Macro 6",
        Scancode.KEY_MACRO7 to "Macro 7",
        Scancode.KEY_MACRO8 to "Macro 8",
        Scancode.KEY_MACRO9 to "Macro 9",
        Scancode.KEY_MACRO10 to "Macro 10",
    )

    fun getScancodeLabel(scancode: Int): String? {
        return SCANCODE_LABELS[scancode]
    }
}
